#include <future>
#include <iostream>

void calculate(std::promise<int> promise) {
    try {
        // 执行一些计算
        int result = 527; 										// 模拟计算结果
        promise.set_value(result); 								// 将结果传递给 future
    } catch (...) {
        // 如果有异常，传递异常到 future
        promise.set_exception(std::current_exception());
    }
}

int main() {
    std::promise<int> promise;
    std::future<int> future = promise.get_future(); 			    // 从promise获取future

    std::thread producerThread(calculate, std::move(promise)); 	// 在新线程中执行计算

    try {
        std::cout << "计算结果: " << future.get() << std::endl; 	// 获取计算结果
    } catch (const std::exception& e) {
        std::cout << "异常: " << e.what() << std::endl;
    }

    producerThread.join(); 									// 等待线程结束
    return 0;
}